package edu.nf.project.services.accountsAndPermissions;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import edu.nf.project.entitys.entity.accountsAndPermissions.convention.Users;

import java.util.Date;
import java.util.List;

/**
 * 账户信息 Service 接口
 */
public interface UsersService {
    /**
     * 登录
     * @param uName 账户名
     * @param pwd 密码
     * @return 用户信息
     */
    Users login(String uName, String pwd);

    /**
     * 注册
     * @param user 用户信息
     * @return 是否成功
     */
    boolean register(Users user);

    /**
     * 获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    Users getUserInfo(Integer userId);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 是否成功
     */
    boolean updateUser(Users user);

    /**
     * 分页查询用户列表
     * @param page 分页参数
     * @param uName 昵称（可选）
     * @param phone 手机号（可选）
     * @return 分页结果
     */
    Page<Users> getUserList(Page<Users> page, String uName, String phone);

    /**
     * 获取全部用户信息
     * @return 用户对象集合
     */
    List<Users> getAllUsers();

    /**
     * 根据时间区间和用户名查询用户列表
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @param uName 用户名（可选）
     * @return 用户列表
     */
    List<Users> getUsersByTimeRange(Date startTime, Date endTime, String uName);

    /**
     * 批量注销用户
     * @return 是否成功
     */
    boolean delUsers(Integer[] userIds);

    /**
     * 用户是否为非顾客角色
     * @return 是或否
     */
    boolean isCustomer(Integer userId);

    /**
     * 根据用户编号验证密码是否匹配
     * @param uId
     * @param pwd
     * @return
     */
    boolean verifyPassword(String uId, String pwd);

}
